// @Author: Duanxj
// @Description:
// @Version: 1.0.0
// @Date: 2021/1/25
// @Time: 9:35

package until

import (
	"bufio"
	"encoding/json"
	"os"
)

type Config struct {
	AppName      string       `json:"app_name"`
	AppMode      string       `json:"app_mode"`
	AppHost      string       `json:"app_host"`
	AppPort      string       `json:"app_port"`
	MysqlSetting MysqlSetting `json:"mysql_setting"`
	EmailInfo    EmailInfo    `json:"email_info"`
}

type MysqlSetting struct {
	DriverName string `json:"drivername"`
	Host       string `json:"host"`
	Port       string `json:"port"`
	Database   string `json:"database"`
	Username   string `json:"username"`
	Password   string `json:"password"`
	Charset    string `json:"charset"`
}

type EmailInfo struct {
	ServerHost string `json:"server_host"` // ServerHost 邮箱服务器地址，如腾讯企业邮箱为smtp.exmail.qq.com
	ServerPort int    `json:"server_port"` // ServerPort 邮箱服务器端口，如腾讯企业邮箱为465
	FromEmail  string `json:"from_email"`  // FromEmail　发件人邮箱地址
	FromPasswd string `json:"from_passwd"` //发件人邮箱密码（注意，这里是明文形式)
}

var _cfg *Config = nil

// 返回已解析好的配置文件
func ReturnConfig() *Config {
	return _cfg
}

// 解析配置文件
func ParseConfig(path string) (*Config, error) {
	file, err := os.Open(path)
	if err != nil {
		panic(err)
	}
	defer file.Close()
	reader := bufio.NewReader(file)
	decoder := json.NewDecoder(reader)
	if err = decoder.Decode(&_cfg); err != nil {
		return nil, err
	}
	return _cfg, nil
}
